package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import model.ItemOrdenCompra;
import model.OrdenCompra;

public class AdministradorPersistenciaOrdenCompra extends AdministradorPersistencia {
	
	private static AdministradorPersistenciaOrdenCompra instancia;
	private String queryInsert = "insert into ordenesCompras (cuitProveedor,estado) values (?,'ACTIVO')";
	private String queryInsertItems = "insert into itemsOrdenesCompras (nroOC,codigoMaterial,cantidad) values (?,?,?)";
		
	private AdministradorPersistenciaOrdenCompra(){

	}
	
	public static AdministradorPersistenciaOrdenCompra getInstancia(){
		if (instancia == null){
			instancia = new AdministradorPersistenciaOrdenCompra();
		}
		return instancia;
	}

	public int insertarOC(OrdenCompra nueva) throws Exception {
		Connection con = super.getConnection();
		PreparedStatement ps = con.prepareStatement(queryInsert,Statement.RETURN_GENERATED_KEYS);
		ps.setInt(1, (int) nueva.getItemsOrdenCompra().get(0).getMaterial().getProveedor().getCuit());
		int nroOC = 0;
		int rc = ps.executeUpdate();
		if (rc > 0){
			ResultSet key = ps.getGeneratedKeys();
			if (key.next()){
				nroOC = key.getInt(1);
			}
			for (ItemOrdenCompra item : nueva.getItemsOrdenCompra()){
				int codMat = item.getMaterial().getCodigo();
				ps = con.prepareStatement(queryInsertItems);
				ps.setInt(1, nroOC);
				ps.setInt(2, codMat);
				ps.setFloat(3, item.getCantidad());
				ps.execute();
			}
		}
		con.close();
		return nroOC;
	}
	
	
	

}
